package org.example;


public class CallbackThreadDemo {

    /**
     * 所谓的callback回调,感觉其实就是主线程中启动子线程前,传递给子线程的一个callback对象.然后启动子线程,
     * 主线程就干其他的去了(甚至主线程可以结束).子线程在自己运行结束后,再去调用这个callback对象的方法执行就好了
     *
     * 主线程在启动子线程前，把一个“待执行的逻辑”（通常是通过接口实现的 callback 对象）传给子线程；
     * 子线程在运行过程中或完成后，根据约定，调用这个 callback 的方法；
     * 此时，虽然主线程可能已经继续干别的，甚至早就结束了，但子线程“回过头来”触发主线程事先交代的逻辑。
     *
     * Callback 回调，本质上就是在主线程中给子线程交代好一段逻辑（callback 对象）,等子线程干完活后，
     * 再主动触发这段逻辑，主线程无需等待
     */
    public static void main(String[] args) {
        System.out.println("主线程启动工作线程----" + Thread.currentThread().getName());

        TaskRunner runner = new TaskRunner(new TaskCallback() {
            @Override
            public void onComplete(String result) {
                System.out.println("收到回调:" + result +"----" + Thread.currentThread().getName());
            }
        });

        runner.start();
        System.out.println("主线程继续执行其他逻辑----" + Thread.currentThread().getName());
    }
}